package com.lan.springbootdruid.datasource;

import com.lan.springbootdruid.enums.DataSourceKey;
import lombok.extern.slf4j.Slf4j;

/**
 * @author: Lan
 * @date: 2019/5/5 17:52
 * @description:解决多线程访问全局变量的问题
 */
@Slf4j
public class DynamicDataSourceContextHolder {

    private static final ThreadLocal<DataSourceKey> currentDateSource = new ThreadLocal<>();

    /**
     * 清除当前数据源
     */
    public static void clear() {
        log.info("清除当前数据源");
        currentDateSource.remove();
    }

    /**
     * 获取当前使用的数据源
     *
     * @return
     */
    public static DataSourceKey get() {
        log.info("获取当前使用的数据源:{}", currentDateSource.get());
        return currentDateSource.get();
    }

    /**
     * 设置当前使用数据源
     *
     * @param key 需要设置的数据源
     */
    public static void set(DataSourceKey key) {
        log.info("设置当前使用数据源:{}", key);
        currentDateSource.set(key);
    }
}
